<?php

/**
 * Description of ProdutoDAO
 *
 * @author Hiago
 */
class ProdutoDAO {

    public static function inserir(Produto $produto) {
        $con = new bd();
        try {
            $con->beginTransaction();
            $stmt = $con->prepare("INSERT INTO `produto` (`idProduto`,`id_tipo`,`nome`,`preco`,`descricao`,`detalhes`)
                VALUES (?,?,?,?,?,?)");
            $dados = Array($produto->getIdProduto(), $produto->getTipo()->getIdTipo(), $produto->getNome(),
                $produto->getPreco(), $produto->getDescricao(), $produto->getDetalhes());
            $stmt->execute($dados);
            $id = $con->lastInsertId();
            $con->ocorreramErros($stmt);
            $produto->setIdProduto($id);
            $con->commit();
        } catch (Exception $ex) {
            $con->rollBack();
        }
    }

    public static function atualizar(Produto $produto) {
        $con = new bd();
        $stmt = $con->prepare("UPDATE `produto` SET `id_tipo` = ?,`nome` = ?,`preco` = ?,
                              `descricao` = ?,`detalhes` = ? WHERE `produto`.`idProduto` = ?;");
        $dados = Array($produto->getTipo()->getIdTipo(), $produto->getNome(),
            $produto->getPreco(), $produto->getDescricao(), $produto->getDetalhes(), $produto->getIdProduto());
        $stmt->execute($dados);
        $con->ocorreramErros($stmt);
    }

    public static function getById($id) {
        $tipoDAO = new TipoDAO();
        $con = new bd();
        $stmt = $con->prepare("SELECT `produto`.`idProduto`, `produto`.`id_tipo`, `produto`.`nome`,
                              `produto`.`preco`, `produto`.`descricao`, `produto`.`detalhes`
                               FROM `baconlanches`.`produto` WHERE `produto`.`idProduto` = ?;");
        $stmt->execute(Array($id));
        $con->ocorreramErros($stmt);

        $r = $stmt->fetch();
        $tipo = $tipoDAO->getById($r[1]);
        return new Produto($r[0], $tipo, $r[2], $r[3], $r[4], $r[5]);
    }

    public static function listar() {
        $tipoDAO = new TipoDAO();
        $con = new bd();
        $stmt = $con->prepare("SELECT `produto`.`idProduto`, `produto`.`id_tipo`, `produto`.`nome`,
                              `produto`.`preco`, `produto`.`descricao`, `produto`.`detalhes`
                               FROM `baconlanches`.`produto`;");
        $stmt->execute();
        $con->ocorreramErros($stmt);

        $produtos = Array();
        while ($r = $stmt->fetch()) {
            $tipo = $tipoDAO->getById($r[1]);
            $produtos[] = new Produto($r[0], $tipo, $r[2], $r[3], $r[4], $r[5]);
        }
        return $produtos;
    }

    public static function excluir(Produto $produto) {
        $con = new bd();
        $stmt = $con->prepare("DELETE FROM `produto` WHERE `produto`.`idProduto` = ?;");

        $dados = Array($produto->getIdProduto());
        $stmt->execute($dados);
        $con->ocorreramErros($stmt);
    }

}

?>
